package offer2

/**
原题链接:
https://leetcode.cn/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof/

剑指 Offer 50. 第一个只出现一次的字符

在字符串 s 中找出第一个只出现一次的字符。如果没有，返回一个单空格。
s 只包含小写字母。

示例 1:
输入：s = "abaccdeff"
输出：'b'
*/

func firstUniqChar(s string) byte {

	if len(s) <= 0 {
		return ' '
	} //1.如果长度为0,直接返回单空格即可
	list := make([]int, 26) //2.创建26长度的切片
	n := len(s)             //3.获取字符串长度

	for i := 0; i < n; i++ { //4.统计26个字母出现的次数
		list[s[i]-'a']++
	}

	for i := 0; i < n; i++ { //5.遍历每个字符
		if list[s[i]-'a'] == 1 {
			return s[i]
		} //5.1 从左到右遍历字符, 如果该字符出现的次数为1, 那么直接返回该字符
	}
	return ' '
}
